iOS অ্যাপ্লিকেশনে Background Fetch এবং Silent Notifications (Silent Push Notifications) দুটি পদ্ধতি ব্যবহার করে ব্যাকগ্রাউন্ডে ডেটা আপডেট করা যায়। এগুলো ব্যবহার করে আমরা অ্যাপ্লিকেশনটি ব্যাকগ্রাউন্ডে থাকলেও রিফ্রেশ এবং ডেটা সিঙ্ক্রোনাইজ করতে পারি, যা অ্যাপকে আরও কার্যকর এবং ব্যবহারকারীর কাছে সর্বদা আপডেটেড রাখে। নিচে Background Fetch এবং Silent Notifications নিয়ে বিস্তারিত আলোচনা করা হলো।
১. Background Fetch
Background Fetch iOS এ একটি বৈশিষ্ট্য যা অ্যাপকে নির্দিষ্ট সময় অন্তর ব্যাকগ্রাউন্ডে ডেটা ফেচ করার সুযোগ দেয়। এটি বিশেষভাবে নিউজ অ্যাপ, সোশ্যাল মিডিয়া অ্যাপ, এবং অন্যান্য ডেটা-ইনটেনসিভ অ্যাপগুলোর জন্য উপযুক্ত, যেখানে অ্যাপ্লিকেশনটি ব্যাকগ্রাউন্ডে থাকা অবস্থায় নিয়মিত ডেটা আপডেট করতে হবে।
Background Fetch কনফিগারেশন
Background Fetch কনফিগার করার জন্য Xcode এবং AppDelegate এ কিছু সেটআপ করতে হবে।
Step 1: Background Modes সক্ষম করা
- Xcode এ আপনার প্রজেক্ট খুলুন।
- Capabilities ট্যাবে যান।
- Background Modes চালু করুন এবং Background Fetch অপশনটি সিলেক্ট করুন।
Step 2: App Delegate এ কনফিগার করা
AppDelegate এ Background Fetch সেটআপ করার জন্য কোড যোগ করুন:
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Background Fetch এর জন্য ইন্টারভাল সেট করা
application.setMinimumBackgroundFetchInterval(UIApplication.backgroundFetchIntervalMinimum)
return true
}
func application(_ application: UIApplication, performFetchWithCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
// ব্যাকগ্রাউন্ডে ডেটা ফেচ করার জন্য একটি ফাংশন কল করা
fetchDataInBackground { newData in
if newData {
completionHandler(.newData) // নতুন ডেটা পাওয়া গেছে
} else {
completionHandler(.noData) // কোনো নতুন ডেটা নেই
}
}
}
// ব্যাকগ্রাউন্ডে ডেটা ফেচ করার একটি ফাংশন
func fetchDataInBackground(completion: @escaping (Bool) -> Void) {
// এখানে আপনার নেটওয়ার্ক রিকোয়েস্ট বা ডেটা প্রসেসিং যুক্ত করুন
// উদাহরণস্বরূপ, API থেকে ডেটা ফেচ করা
completion(true) // নতুন ডেটা পাওয়া গেছে কিনা তা রিটার্ন করুন
}
}
ব্যাখ্যা:
- setMinimumBackgroundFetchInterval: এটি Background Fetch এর ইন্টারভাল সেট করে, যেটি ব্যাটারি এবং রিসোর্স ব্যবস্থাপনার ওপর নির্ভর করে।
- performFetchWithCompletionHandler: এটি ব্যাকগ্রাউন্ডে চালিত হয় এবং নতুন ডেটা ফেচ করার জন্য ব্যবহৃত হয়।
- fetchDataInBackground: এটি একটি কাস্টম ফাংশন যা ডেটা ফেচ করে এবং ফলাফল রিটার্ন করে।
Background Fetch এর সুবিধা
- Automatic Execution: iOS স্বয়ংক্রিয়ভাবে Background Fetch পরিচালনা করে, তাই ডেভেলপারকে নির্দিষ্ট সময়সূচি নিয়ে ভাবতে হয় না।
- Efficient Resource Management: iOS ব্যাটারি এবং রিসোর্স ব্যবস্থাপনা নিশ্চিত করে, তাই এটি ব্যাটারি এবং পারফরমেন্সের জন্য উপযুক্ত।
- Simple Setup: এটি সহজেই AppDelegate এ কনফিগার করা যায়।
২. Silent Notifications (Silent Push Notifications)
Silent Push Notifications ব্যাকগ্রাউন্ডে অ্যাপের ডেটা আপডেট করতে এবং সিঙ্ক্রোনাইজ করতে সাহায্য করে। এটি ব্যবহারকারীকে কোনো নোটিফিকেশন দেখায় না, বরং অ্যাপ্লিকেশনকে ব্যাকগ্রাউন্ডে কাজ করতে দেয়।
Silent Push Notifications কনফিগারেশন
Silent Push Notifications সেটআপ করতে আপনার অ্যাপ এবং সার্ভার উভয় জায়গায় কিছু কনফিগারেশন প্রয়োজন।
Step 1: Background Modes সক্ষম করা
- Xcode এ Capabilities ট্যাবে যান।
- Background Modes চালু করুন এবং Remote Notifications অপশনটি সিলেক্ট করুন।
Step 2: Info.plist ফাইলে পরিবর্তন করা
Info.plist এ নিচের এন্ট্রি যুক্ত করুন:
- Key:
UIBackgroundModes - Value:
remote-notification
Step 3: App Delegate এ Silent Push Notification হ্যান্ডল করা
Silent Push Notification হ্যান্ডল করার জন্য AppDelegate এ নিচের মতো কোড যোগ করুন:
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate {
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
// ব্যাকগ্রাউন্ডে ডেটা ফেচ বা প্রসেস করা
fetchDataInBackground { success in
if success {
completionHandler(.newData) // নতুন ডেটা পাওয়া গেছে
} else {
completionHandler(.noData) // কোনো নতুন ডেটা নেই
}
}
}
func fetchDataInBackground(completion: @escaping (Bool) -> Void) {
// নেটওয়ার্ক রিকোয়েস্ট বা ডেটা প্রসেসিং কোড যুক্ত করুন
completion(true)
}
}
Step 4: Server থেকে Silent Push Notification পাঠানো
সার্ভার থেকে JSON পে-লোড পাঠাতে হবে, যা অ্যাপ্লিকেশনে ব্যাকগ্রাউন্ড কাজ করতে নির্দেশ দেবে:
{
"aps": {
"content-available": 1
},
"customData": {
"type": "update",
"value": "New data available"
}
}
ব্যাখ্যা:
- "content-available": 1: এটি Silent Push Notification নিশ্চিত করে, যা অ্যাপকে ব্যাকগ্রাউন্ডে চালাতে সাহায্য করে।
- "customData": এখানে কাস্টম ডেটা পাঠানো যায়, যা ব্যাকগ্রাউন্ডে প্রসেস করা হবে।
Silent Push Notification এর সুবিধা
- Background Execution: এটি ব্যাকগ্রাউন্ডে ডেটা আপডেট এবং প্রসেস করতে পারদর্শী।
- No User Interaction Required: এটি ব্যবহারকারীর নোটিফিকেশন দেখানোর প্রয়োজন ছাড়াই কাজ করে, যা ডেটা সিঙ্ক্রোনাইজেশনের জন্য উপযুক্ত।
- Efficient Updates: এটি ব্যাটারি এবং রিসোর্স ব্যবস্থাপনা মেনে ডেটা আপডেট পরিচালনা করে।
Background Fetch এবং Silent Push Notifications এর সেরা চর্চা
- Minimum Background Usage: ব্যাটারি এবং রিসোর্স ব্যবহারের দিকে লক্ষ রেখে শুধু প্রয়োজনীয় ডেটা ফেচ বা প্রসেস করুন।
- Error Handling নিশ্চিত করুন: Background Fetch এবং Silent Push এ সবসময় এরর হ্যান্ডলিং নিশ্চিত করুন এবং প্রয়োজনে রিট্রাই লজিক যুক্ত করুন।
- Network Efficiency: ব্যাকগ্রাউন্ডে কাজ করার সময় অ্যাপের নেটওয়ার্ক ব্যবহারের কার্যকারিতা নিশ্চিত করুন।
- User Permissions: Background Fetch এবং Remote Notifications এর আগে ব্যবহারকারীর অনুমতি নিশ্চিত করুন।
Background Fetch এবং Silent Push Notifications এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Background Fetch | Silent Push Notification |
|---|---|---|
| Trigger Method | iOS নিজে স্বয়ংক্রিয়ভাবে শিডিউল করে | Remote সার্ভার থেকে ট্রিগার করা হয় |
| User Interaction | ব্যবহারকারীর নোটিফিকেশন দেখায় না | ব্যবহারকারীর নোটিফিকেশন দেখায় না |
| Custom Data | কেবলমাত্র ডিভাইসে ডেটা ফেচ করে | কাস্টম ডেটা পে-লোড দিয়ে কাজ পরিচালনা করে |
| Control | iOS এর উপর নির্ভর করে | সার্ভার নিয়ন্ত্রিত |
উপসংহার
Background Fetch এবং Silent Push Notifications iOS অ্যাপ্লিকেশনকে ব্যাকগ্রাউন্ডে ডেটা আপডেট এবং সিঙ্ক্রোনাইজ করার একটি কার্যকর উপায় প্রদান করে। Background Fetch সিস্টেম দ্বারা নিয়ন্ত্রিত হলেও, Silent Push Notification সার্ভার দ্বারা নিয়ন্ত্রিত হয় এবং আরও কাস্টমাইজড সাপোর্ট প্রদান করে। ডেভেলপারদের জন্য এটি অত্যন্ত গুরুত্বপূর্ণ টেকনিক, যা অ্যাপ্লিকেশনকে সর্বদা আপডেটেড এবং ব্যবহারকারীর অভিজ্ঞতাকে উন্নত করে তুলতে পারে।
Read more